﻿using System.Runtime.Serialization;

namespace FuiouMerchantAccess.Models.Request {
    public class WxMchntRequestInfo : MerchantAccessRequestInfo {
        /// <summary>
        /// 二级代理机构号(若无二级代理或不知此字段意思可直接不传
        /// </summary>
        [DataMember(Name = "sub_ins_cd")]
        public string SubInsCd { get; set; }

        /// <summary>
        /// 必填，商户全称，不能有特殊字符，仅可包含汉字、数字、字母
        /// (需与营业执照一致，如遇提示重复，请在后面加数字1、2...，若为小微商户，请命名为 个体户 xxx。)
        /// </summary>
        [DataMember(Name = "mchnt_name")]
        public string MchntName { get; set; }

        /// <summary>
        /// 必填，商户简称，不能有特殊字符，仅可包含汉字、数字、字母
        /// (建议和商户门头名称保持一致)
        /// </summary>
        [DataMember(Name = "mchnt_shortname")]
        public string MchntShortname { get; set; }

        /// <summary>
        /// 必填，商户真实名称(与营业执照上相同)
        /// </summary>
        [DataMember(Name = "real_name")]
        public string RealName { get; set; }

        /// <summary>
        /// 必填，证件类型：
        /// 0 营业执照，1 三证合一-->企业商户根据证件类型传 0 或 1;
        /// A 身份证(一证下机)-->小微商户传 A;
        /// B 个体户-->个体工商户不论证件是营业执照还是三证合一都传 B;
        /// 2 事业单位
        /// </summary>
        [DataMember(Name = "license_type")]
        public string LicenseType { get; set; }

        /// <summary>
        /// 必填，证件号码，填写方法：
        /// 1.license_type=0 或 1 或 2，此处填写营业执照号码。
        /// 2.license_type=A，此处填写身份证号码
        /// 3.license_type=B，此处填写个体工商户营业执照号码
        /// </summary>
        [DataMember(Name = "license_no")]
        public string LicenseNo { get; set; }

        /// <summary>
        /// 必填，证件到期日（格式yyyyMMdd）
        /// 长期请填20991231，无有效期请填19000101
        /// 1.license_type=0 或 1 或 2，此处填写营业执照到期日。
        /// 2.license_type=A，此处填写身份证的到期日
        /// 3.license_type=B，此处填写个体工商户营业执照号的到期日
        /// </summary>
        [DataMember(Name = "license_expire_dt")]
        public string LicenseExpireDt { get; set; }

        /// <summary>
        /// 必填，法人身份证号
        /// </summary>
        [DataMember(Name = "certif_id")]
        public string CertifId { get; set; }

        /// <summary>
        /// 必填，法人身份证到期日（格式 YYYYMMDD）
        /// </summary>
        [DataMember(Name = "certif_id_expire_dt")]
        public string CertifIdExpireDt { get; set; }

        /// <summary>
        /// 必填，联系人姓名（不能有特殊字符）
        /// </summary>
        [DataMember(Name = "contact_person")]
        public string ContactPerson { get; set; }

        /// <summary>
        /// 必填，客服电话，必须纯数字。推荐 400开头电话或11位有效手机号
        /// </summary>
        [DataMember(Name = "contact_phone")]
        public string ContactPhone { get; set; }

        /// <summary>
        /// 必填，商户经营地联系地址
        /// </summary>
        [DataMember(Name = "contact_addr")]
        public string ContactAddr { get; set; }

        /// <summary>
        /// 必填，联系电话
        /// </summary>
        [DataMember(Name = "contact_mobile")]
        public string ContactMobile { get; set; }

        /// <summary>
        /// 必填，联系邮箱
        /// </summary>
        [DataMember(Name = "contact_email")]
        public string ContactEmail { get; set; }

        /// <summary>
        /// 必填，经营范围代码（新开户则必填） 见附件4.微信经营范围代码
        /// </summary>
        [DataMember(Name = "business")]
        public string Business { get; set; }

        /// <summary>
        /// 必填，商户经营地市代码 见附件6.省市县代码对照表
        /// </summary>
        [DataMember(Name = "city_cd")]
        public string CityCd { get; set; }

        /// <summary>
        /// 必填，商户经营地区县代码（必须属于 city_cd 所辖） 见附件6.省市县代码对照表
        /// </summary>
        [DataMember(Name = "county_cd")]
        public string CountyCd { get; set; }

        /// <summary>
        /// 必填，入账卡类型：1：对公；2：对私;
        /// 入账卡类型为 1 时，对公户户名需与营业执照名称保持一致（进件若为双账户时，此处必填 2 ，即对私结算）
        /// </summary>
        [DataMember(Name = "acnt_type")]
        public string AcntType { get; set; }

        /// <summary>
        /// 行别,（acnt_type=1 必填）(参考行别对照表)见附件7.行别对照表
        /// </summary>
        [DataMember(Name = "bank_type")]
        public string BankType { get; set; }

        /// <summary>
        /// 必填，入账卡开户行联行号
        /// 对公户和城商行，农商行，农信社必填，否则影响银行卡入账。
        /// 如果联行号在富友给的表格里不存在，可联系运营人员添加
        /// 见附件9.开户行信息列表
        /// </summary>
        [DataMember(Name = "inter_bank_no")]
        public string InterBankNo { get; set; }

        /// <summary>
        /// 必填，入账卡开户行名称
        /// 见附件9.开户行信息列表
        /// </summary>
        [DataMember(Name = "iss_bank_nm")]
        public string IssBankNm { get; set; }

        /// <summary>
        /// 必填，入账卡户名
        /// 1. 如果 license_type = A，acnt_nm=artif_nm 即小微商户身份证入网须入账法人
        /// 2. 如果 acnt_type = 2 且acnt_artif_flag=1，则 acnt_nm = artif_nm 即对私且法人入账，则入账卡户名和法人姓名一致
        /// 3. 如果 acnt_type = 1 且acnt_artif_flag=1，则 acnt_nm = real_name 即对公且法人入账，则入账卡户名和营业执照上商户名一致
        /// </summary>
        [DataMember(Name = "acnt_nm")]
        public string AcntNm { get; set; }

        /// <summary>
        /// 必填，入账卡号（不带长度位）
        /// </summary>
        [DataMember(Name = "acnt_no")]
        public string AcntNo { get; set; }

        /// <summary>
        /// 必填，法人姓名
        /// （如果 acnt_type = 2 时，artif_nm=acnt_nm，即对私结算入账户名和法人名称一致）
        /// </summary>
        [DataMember(Name = "artif_nm")]
        public string ArtifNm { get; set; }

        /// <summary>
        /// 必填，法人入账标识 0 :非法人入账，1：法人入账
        /// 若license_type=A，这此字段必须填：1：法人入账
        /// </summary>
        [DataMember(Name = "acnt_artif_flag")]
        public string AcntArtifFlag { get; set; }

        /// <summary>
        /// 必填，入账证件类型("0":"身份证"【默认】
        /// 【acnt_artif_flag = 0 时必填】
        /// </summary>
        [DataMember(Name = "acnt_certif_tp")]
        public string AcntCertifTp { get; set; }

        /// <summary>
        /// 必填，入账证件号
        /// 【acnt_artif_flag = 0时必填】
        /// 1.如果 license_type = A，则acnt_certif_id =license_no 即小微商户身份证入网须入账人身份证号码即法人身份证号码
        /// 2.如果 acnt_type = 2 且acnt_artif_flag=1，则acnt_certif_id =certif_id 即对私且法人入账，则入账卡人身份证号码和法人身份证号码一致
        /// </summary>
        [DataMember(Name = "acnt_certif_id")]
        public string AcntCertifId { get; set; }

        /// <summary>
        /// 必填，入账证件到期日（格式 yyyyMMdd）
        /// license_type=A，这里的值acnt_certif_expire_dt=license_expire_dt
        /// </summary>
        [DataMember(Name = "acnt_certif_expire_dt")]
        public string AcntCertifExpireDt { get; set; }

        /// <summary>
        /// 退货标识(0：不能退货，1：可以退货)
        /// </summary>
        [DataMember(Name = "th_flag")]
        public string ThFlag { get; set; }
        /// <summary>
        /// 微信支付标识（0：不开通，1：开通）
        /// </summary>
        [DataMember(Name = "wx_flag")]
        public string WxFlag { get; set; }

        /// <summary>
        /// 微信扣率套餐代码(如果wx_flag=1，则必填)
        /// 见附件1.扣率套餐代码
        /// </summary>
        [DataMember(Name = "wx_set_cd")]
        public string WxSetCd { get; set; }

        /// <summary>
        /// 支付宝支付标识（0：不开通，1：开通）
        /// </summary>
        [DataMember(Name = "ali_flag")]
        public string AliFlag { get; set; }

        /// <summary>
        /// 支付宝扣率套餐代码(如果ali_flag=1，则必填)
        /// 见附件1.扣率套餐代码
        /// </summary>
        [DataMember(Name = "ali_set_cd")]
        public string AliSetCd { get; set; }

        /// <summary>
        /// QQ钱包支付标识（0：不开通【默认】，1：开通）
        /// </summary>
        [DataMember(Name = "qpay_flag")]
        public string QPayFlag { get; set; }

        /// <summary>
        /// QQ钱包扣率套餐代码
        /// 若此字段不填，则取wx_set_cd值作为JD扣率套餐代码
        /// </summary>
        [DataMember(Name = "qpay_set_cd")]
        public string QPaySetCd { get; set; }

        /// <summary>
        /// JD钱包支付标识（0：不开通【默认】，1：开通）
        /// </summary>
        [DataMember(Name = "jdpay_flag")]
        public string JDPayFlag { get; set; }

        /// <summary>
        /// JD钱包扣率套餐代码
        /// 若此字段不填，则取wx_set_cd值作为JD扣率套餐代码
        /// </summary>
        [DataMember(Name = "jdpay_set_cd")]
        public string JDPaySetCd { get; set; }

        /// <summary>
        /// 必填，清算类型：
        /// 1 自动结算（T1）；
        /// 2 手动结算；
        /// 3 自动结算（D1）；
        /// 4 定时结算
        /// 1：T+1 自动结算商户款项
        /// 2：需商户手动提现才能将款项入账到银行卡
        /// </summary>
        [DataMember(Name = "settle_tp")]
        public string SettleTp { get; set; }

        /// <summary>
        /// 清算类型扣率套餐代码(settle_tp==3或者settle_tp==4时必填)(使用d0扣率模板见附件1.扣率套餐代码)
        /// </summary>
        [DataMember(Name = "settle_tp_cd")]
        public string SettleTpCd { get; set; }

        /// <summary>
        /// 清算时间，08-23定时清算时间(settle_tp==4 时必填)
        /// </summary>
        [DataMember(Name = "settle_ts")]
        public string SettleTs { get; set; }


        /// <summary>
        /// 必填，联系人身份证号
        /// </summary>
        [DataMember(Name = "contact_cert_no")]
        public string ContactCertNo { get; set; }

        /// <summary>
        /// 必填，营业执照开始时间
        /// </summary>
        [DataMember(Name = "license_start_dt")]
        public string LicenseStartDt { get; set; }

        /// <summary>
        /// 必填，营业执照注册地址 
        /// </summary>
        [DataMember(Name = "lic_regis_addr")]
        public string LicRegisAddr { get; set; }

        /// <summary>
        /// 必填，法人身份证开始时间
        /// </summary>
        [DataMember(Name = "card_start_dt")]
        public string CardStartDt { get; set; }
    }
}
